Skip to main content

3.1 Opprettelse av nye variabler og omkoding - generate∕replace

For å lage en ny variabel brukes kommandoen generate, der en spesifiserer navnet og hvilken verdi den skal ha. Dette kan være en konkret verdi eller en verdi basert på en likning/formel. if-betingelser brukes til å angi hvilke tilfeller/enheter som skal få en verdi.

Merk at kommandoen generate bare kan brukes til å angi én verdi. Vil en legge til flere koder, kan replace-kommandoen benyttes i videre steg for å fullføre prosessen.

En kan også bruke generate til å kopiere andre variabler: generate <nyvar> = <gammelvar>. Også dette kan kombineres med IF-betingelser.

Eksempel på koding av dummyen "mann":

 import ds/BEFOLKNING_KJOENN as kjønn
generate mann = 1
replace mann = 0 if kjønn != '1'
 

Det er mange mulige måter å lage logiske betingelser på, som alle vil gi samme resultat. En kunne alternativt kodet på følgende måte:

 import ds/BEFOLKNING_KJOENN as kjønn
generate mann = 0
replace mann = 1 if kjønn == '1'
 

En mer komprimert metode der man slipper å bruke replace (verdien 1 gis til observasjoner som tilfredsstiller betingelsen man setter - den andre verdien (0) settes automatisk for alle observasjoner som ikke tilfredsstiller betingelsen):

 import ds/BEFOLKNING_KJOENN as kjønn
generate mann = kjønn == '1'
 

NYTTIG INFO
  • = brukes når verdier settes gjennom generate eller replace. == brukes ved logiske IF-betingelser.

  • Verdier for alfanumeriske variabler angis med enkeltfnutter eller dobbeltfnutter ('1', '2', ... etc, eller "1", "2", ... etc), mens for numeriske variabler angis verdiene som rene tall uten fnutter (1, 2, .... etc).

    • Variabelformatet finner en ved å se på den aktuelle variabelen øverst til venstre (datasettvinduet) eller nederst til venstre (registervariabelvinduet).
  • Kode for manglende data ("missingverdi") angis på følgende måte: sysmiss( <variabel> )

    • Eksempel (en filtrerer bort records/enheter med manglende verdier for kjønn):
     
    import ds/BEFOLKNING_KJOENN as kjønn
    generate mann = 1
    replace mann = 0 if kjønn != '1'
    drop if sysmiss( kjønn )
     
  • Følgende logiske operatorer kan brukes i forbindelse med IF-betingelser:

    • Større enn: >

    • Mindre enn: <

    • Er lik: ==

    • Større enn eller lik: >=

    • Mindre enn eller lik: <=

    • Er ulik: !=

    • Eller: |

    • Og: &

  • Dummyvariabler MÅ av metodiske grunner være numeriske og bestå av verdiene 1 og 0. En kan altså ikke ha en dummyvariabel med kun verdien 1. Dette vil generere uønskede resultat, eller feilmelding når en kjører regresjonsanalyser. I praksis må en derfor passe på å kode alle enheter som ikke har "suksess"-verdien med verdien 0 (se eksempel øverst på forrige side).

  • Ved bruk av dummyvariabler i IF-betingelser, trenger en ikke angi verdien 1.

    • Eksempel: I stedet for tabulate sivstand if mann == 1, kan en skrive tabulate sivstand if mann
  • Om hensikten med tilretteleggingen av variablene er å benytte regresjonsanalyser, bør kategoriske verdier kodes på numerisk form. Hvis ikke risikerer en at systemet ikke godtar variabelinputen, og at en får feilmelding når en kjører kommandoer som regress, logit, etc.

  • Av metodiske grunner bør kategoriske variabler vanligvis tilrettelegges som dummyvariabler slik som i eksempelet med variabelen "mann" ovenfor. Dette gjelder også flerkategorivariabler (mer enn to kategorier) som f.eks. "Utdanningsnivå". I slike tilfeller lager en et sett med dummyvariabler som i kombinasjon tilsvarer flerkategorivariabelen. I praksis vil hver kategori minus referanse-/basis-kategorien representeres ved separate dummyvariabler, der en tolkningsmessig måler effekten av de enkelte kategorier sammenliknet med referansekategorien. Prosessen med å lage sett av dummyvariabler kan automatiseres gjennom å bruke prefikset i. foran variabelnavnet i de ulike regresjons-uttrykkene. Da benyttes automatisk den laveste verdi som referanseverdi.

  • Missingverdier: Vær obs på at alle enheter der minst én av variablene har en missingverdi blir ekskludert fra regresjonskjøringer. Variabler med mange missingverdier som ikke blir kodet om vil da kunne føre til at regresjonsanalysen blir utført på et mye mindre datasett enn planlagt. Dette er noe en bør være klar over under tilretteleggingen. I eksempelet med kjønn vil det typisk være få enheter/individer med missingverdi, men det kan være andre variabler som angir f.eks. trygdeytelser som "Uføregrad". Et flertall vil her ha missingverdi, og bare dem som er uføre vil ha en gyldig verdi. En bør da kode på følgende måte:

 
import ds/PENSJONER_UFOERGRAD 2010-01-01 as uførgrad
generate ufør = 1
replace ufør = 0 if sysmiss( uførgrad )
 
  • Missingverdier for inntektsvariabler: Dette vil typisk gjelde alle personer med inntekt = 0. Hvis også disse bør være med i analysen, må de kodes om til 0-verdier: replace inntekt = 0 if sysmiss(inntekt)

\rhd [Eksempler på tilrettelegging av variabler, inkl. bruk av labler](docs\eksempel\Grunnleggende operasjoner\Tilrettelegge variabler - dummy- og flerkategorivariabler - funksjoner - labler.md)